package coba.calendar;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import com.liferay.portal.kernel.exception.SystemException;

import coba.model.Feriado;
import coba.model.Guia;
import coba.model.Itinerario;
import coba.model.ItinerarioRecorrido;
import coba.model.LicenciaGuia;
import coba.model.Recorrido;
import coba.model.Solicitud;
import coba.calendar.Disponibilidad;
import coba.service.ItinerarioLocalServiceUtil;

public class CalendarDay {

	public static String get(String modalidad, Long itinerarioId, int anio, int mes, int dia,
			List<ItinerarioRecorrido> listItinerarioRecorrido, List<Recorrido> listRecorrido,
			List<Solicitud> listSolicitud, List<Guia> listGuia, List<LicenciaGuia> listLicenciaGuia,
			List<Feriado> listFeriado) throws SystemException {

		Calendar cal = new GregorianCalendar(anio, mes, dia);
		int diaDeLaSemana = cal.get(Calendar.DAY_OF_WEEK);
		
		String feriado = EsFeriado.get(listFeriado, anio, mes, dia);
		boolean esFeriado = feriado != null;
		
		Calendar cal1 = new GregorianCalendar(anio, mes, dia, 0, 0, 0);
		cal1.add(Calendar.DATE, 1);
		boolean diaPasado = cal1.getTime().compareTo(new Date()) < 0;
		
		long disponibilidadGuias = DisponibilidadGuias.get(listSolicitud, anio, mes, dia, listGuia, listLicenciaGuia);
		List<Itinerario> listItinerario = ItinerarioLocalServiceUtil.findByFechaBaja(null);
		StringBuilder strbld = new StringBuilder();
		
		strbld.append("<td class=\"table-data\" style=\"width:16%;").
				append(esFeriado ? "background-color:#D8D8D8" : disponibilidadGuias > 0 ? "" : "background-color:#F2F5A9").
				append("\">").
				append("<div style=\"float:right\">").append(dia).append("</div>")
				.append("<div>");
		
		if (!esFeriado) {
			for (Itinerario itinerario : listItinerario) {
				if ((modalidad == null || modalidad.trim().equals("") ||
						modalidad.equals(itinerario.getModalidad())) &&
						(itinerarioId == null || itinerarioId.equals(itinerario.getId()))) {
					long disponibilidad = Disponibilidad.getByItinerario(listSolicitud, anio, mes, dia, listItinerarioRecorrido, listRecorrido, itinerario.getId());
			
					if (itinerario.getDiasSemana().indexOf(String.valueOf(diaDeLaSemana - 1)) > -1) {
						strbld.append("<a style=\"color:").
								append(diaPasado ? "black" : (disponibilidad < 0 ? "red" : (disponibilidad == 0 ? "black" : "#00DD00"))).
								append("\" href=\"#\" onclick=\"return verItinerario('").
								append(itinerario.getId()).
								append("', '" + anio + "', '" + mes + "', '" + dia + "')\">").
								append(itinerario.getNombre()).append("</a>").append("<br />");
					}
				}
			}
		}
		else {
			strbld.append(feriado);
		}
		
		strbld.append("</div>").append("</td>");
		
		return strbld.toString();

	}

}
